1.字符串：
String.strike() //文字显示删除线,其实是创建strike标签,但鼓励使用del标签，不过字符串里没有del()方法
<ins datetime="2016-07-31T16:28:37 +0800">insert标签，配合del标签使用，表示更正后的内容</ins>

substring(start, stop) 左闭右开。
substr(start,length) 非ECMA标准,length 可以不指定，此时到尾
slice(start,end) 类似数组的slice

encodeURI()是Javascript中真正用来对URL编码的函数。
	它着眼于对整个URL进行编码，因此除了常见的符号以外，对其他一些在网址中有特殊含义的符号“; / ? : @ & = + $ , #”，不进行编码
对应解码函数decodeURI()

encodeURIComponent()
	它与encodeURI()的区别是，它用于对URL的组成部分进行个别编码，因此，“; / ? : @ & = + $ , #”，在encodeURIComponent()中统统会被编码。至于具体的编码方法，两者是一样。

2.数组：
slice(start, end) 切片，该方法并不会修改数组，而是返回一个子数组，包括原数组中选定的元素
splice(index,howmany,item1,.....,itemX
) 向数组中删除(并添加)项目，返回被删除的项目。该方法会修改原始数组

把数组想像成栈，尾上头下。
push/pop 对数组尾部操作
unshift/shit 对数组头部操作(shift把头部元素推走)
它们都是改变了原有的数组 

concat 方法用于连接两个或多个数组。该方法不会改变现有的数组
document.write(arr.concat(arr2))

join 返回的是一个字符串，元素是通过指定的分隔符进行分隔,默认是逗号.

3.函数
bind()  函数会创建一个新函数（称为绑定函数），新函数与被调函数（绑定函数的目标函数）具有相同的函数体.当目标函数被调用时 this 值即为 bind() 的第一个参数

apply() 方法在指定 this 值和参数（参数以数组或类数组对象的形式存在）的情况下调用某个函数
/* min/max number in an array */
var numbers = [5, 6, 2, 3, 7];

/*
 * using Math.min/Math.max apply 
 * 非常地神奇，Math.max(a,b) 本身只能接受两个参数的!
 */ 
var max = Math.max.apply(null, numbers);

call() 方法同上,参数不同而已。//call()方法接受的是若干个参数的列表，而apply()方法接受的是一个包含多个参数的数组(或类数组对象)

var animals = [
  {species: 'Lion', name: 'King'},
  {species: 'Whale', name: 'Fail'}
];

//that's cool
for (var i = 0; i < animals.length; i++) {
  (function (i) { 
    this.print = function () { 
      console.log('#' + i  + ' ' + this.species + ': ' + this.name); 
    } 
    this.print();
  }).call(animals[i], i);
}

//浮点数计算
console.log(1.1 - 1);
console.log(.1 + .2);
//玩死人了
console.log(1149.6 * 100);
console.log(7524.14　* 10 * 10);
